﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using UTSDAL.LINQSQL.Model;
using UTSDAL.LINQSQL.DAO;

namespace UTSDAL.LINQSQL.Metadata
{
    
    public class BuildingMetaData
    {

        [DisplayName("Building Id")]
        [ScaffoldColumn(false)]
        public object BuilidingId { get; set; }

        [DisplayName("Building Name")]
        public object BuidlingName { get; set; }

        public object Department { get; set; }

    }

    
    

    public class DepartmentMetaData
    {
        [ScaffoldColumn(false)]
        public Object DepartmentId { get; set; }

        [DisplayName("Department Name")]
        public Object DepartmentName { get; set; }

        [DisplayName("Location")]
        public Object Location { get; set; }


    }

    public class FacilityMetaData
    {
        [ScaffoldColumn(false)]
        public Object FacilityId { get; set; }

        [DisplayName("Facility Name")]
        public Object FacilityName { get; set; }

    }


    public class LecturerMetaData
    {
        [ScaffoldColumn(false)]
        public Object LecturerId { get; set; }

        [DisplayName("Lecturer Name")]
        public Object LecturerName { get; set; }

    }

    public class ParameterMetaData
    {
        [ScaffoldColumn(false)]
        public Object ParameterId { get; set; }

        [DisplayName("Parameter Name")]
        public Object ParameterName { get; set; }

    }

    public class CourseDayMetaData
    {

        [ScaffoldColumn(false)]
        public object CourseDayId {get; set;}

        [ReadOnly(true)]
        public object CourseDayName { get; set; }

        public object Enabled { get; set; }

        [ScaffoldColumn(false)]
        public object DisplayOrder{ get; set; }

    }

    [DisplayColumn("CohortName")]
    public class CohortMetaData
    {

        [ScaffoldColumn(false)]
        public object CohortId { get; set; }

        [DisplayName("Cohort Name")]
        public object CohortName { get; set; }

        [DisplayName("Capacity")]
        public object Capacity { get; set; }

        [DisplayName("Department")]
        public object Department { get; set; }

    }

    [DisplayName("Types of Cohort")]
    public class CohortTypeMetaData
    {

        [ScaffoldColumn(false)]
        public object CohortTypeId { get; set; }

        [DisplayName("Cohort Type Name")]
        public object CohortTypeName { get; set; }

        [DisplayName("Start Time")]
        public object StartTime { get; set; }

        [DisplayName("End Time")]
        public object EndTime { get; set; }

    }

    public class SemesterMetaData
    {
        [ScaffoldColumn(false)]
        public object SemesterId { get; set; }

        [DisplayName("Semester Name")]
        public object SemesterName { get; set; }

        [DisplayName("Start Date")]
        public object StartDate { get; set; }

        [DisplayName("End Date")]
        public object EndDate { get; set; }

        [ScaffoldColumn(false)]
        public object SemesterModules { get; set; }

    }

    [DisplayColumn("ModuleLabel")]    
    public class ModuleMetaData
    {
        [ScaffoldColumn(false)]
        public object ModuleId { get; set; }

        [DisplayName("Module Code")]
        public object ModuleCode{ get; set; }

        [DisplayName("Module Name")]
        public object ModuleName { get; set; }

        [DisplayName("Module Description")]
        //[UIHint("RichText")]
        public object ModuleDescription { get; set; }

        [ScaffoldColumn(false)]
        public object SemesterModules { get; set; }
    }

    [DisplayName("Types of Timetable Events")]
    public class TimetableEventTypeMetaData
    {
        [ScaffoldColumn(false)]
        public object TimetableEventTypeId { get; set; }

        [DisplayName("Timetable Event Type Name")]
        public object TimetableEventTypeName { get; set; }
    }

    [DisplayName("Events in Modules")]
    [DisplayColumn("ModuleEventLabel")]
    public class ModuleEventMetaData
    {
        [ScaffoldColumn(false)]
        public object ModuleEventId { get; set; }

        public object ModuleEventType { get; set; }

        public object TimeRequired { get; set; }

        public object Module { get; set; }
    }

    [DisplayName("Modules in Cohort")]
    public class CohortModulesMetaData
    {
        public object Cohort { get; set; }

        public object Module { get; set; }

        public object Semester { get; set; }
    }

    [DisplayName("Facilities for Module Events")]
    public class ModuleEventFacilityMetaData
    {
        public object Facility { get; set; }

        
        public object ModuleEvent { get; set; }

    }

    [DisplayName("Rooms in Department")]
    public class DepartmentRoomMetaData
    {
        public object Department { get; set; }

        public object Room { get; set; }
    }
    

    [DisplayName("Types of Module Events")]
    public class ModuleEventTypeMetaData
    {
        [ScaffoldColumn(false)]
        public object ModuleEventTypeId { get; set; }

        [DisplayName("Module Event Type Name")]
        public object ModuleEventTypeName { get; set; }

        [DisplayName("Time Required")]
        public object TimeRequired { get; set; }
    }
    
    [DisplayName("Timetable Event")]
    public class TimetableEventMetaData
    {

        [ScaffoldColumn(false)]
        public object TimetableEventId { get; set; }
        
        public object StartTime { get; set; }

        public object EndTime { get; set; }

        public object CourseDay { get; set; }

        public object TimetableEventType { get; set; }

        public object Cohort { get; set; }

        public object Room { get; set; }

        public object Module { get; set; }

        public object ModuleEvent { get; set; }

        public object Semester { get; set; }

    }


    [DisplayName("Facilities in Rooms")]
    public class RoomFacilityMetaData
    {

        public object Room {get;set;}

        public object Facility {get;set;}
    }



    [DisplayName("Types of Rooms")]
    public class RoomTypeMetaData
    {
        public object RoomTypeId { get; set; }

        [DisplayName("Room Type Name")]
        public object RoomTypeName { get; set; }

    }

    [DisplayName("Modules in Semester")]
    [ScaffoldTable(false)]
    public class SemesterModuleMetaData
    {

        public object Module {get;set;}

        public object Semester { get; set; }

    }



}
